package it.apiconsulting.wot.service;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import it.apiconsulting.wot.bean.UtenteBean;
import it.apiconsulting.wot.controller.LoggedManager;
import it.apiconsulting.wot.controller.UtenteManager;
import it.apiconsulting.wot.model.Logged;
import it.apiconsulting.wot.model.Utente;

public class LoginService {
	
	private List<Utente> utenti = new ArrayList<Utente>();
	private UtenteManager utenteManager = new UtenteManager();
	
	private Logged logged = new Logged();
	private LoggedManager loggedManager = new LoggedManager();

	public UtenteBean login(String username, String password) {
		
		
		UtenteBean uBean = new UtenteBean();
		try {
			
			boolean find = false;
			Utente utente = new Utente();
			this.utenti = utenteManager.list();
			
			for (int i = 0; i < utenti.size(); i++) {
				if (utenti.get(i).getUsername().equals(username) && 
						utenti.get(i).getPassword().equals(password)) {
					find = true;
					utente = utenti.get(i);
				}
				if (find) break;
			}
			
			if (find) {
				
				/** Gestione Login**/
				logged = loggedManager.isUtenteActive(utente.getId());
				if (logged==null) {
					logged = new Logged();
				} else {
					loggedManager.deleteByIdUtente(utente.getId());	
				}
				/** id utente **/
				logged.setIdUtente(utente.getId());
				/** login date **/
				Calendar calendarLogin = Calendar.getInstance();
			    Timestamp dateLogin = new Timestamp(calendarLogin.getTime().getTime());
			    logged.setLoginDate(dateLogin);
				/** logout date **/
				Calendar calendarLogout = Calendar.getInstance();
				calendarLogout.add(Calendar.HOUR, 1);
				Timestamp dateLogout = new Timestamp(calendarLogout.getTime().getTime());
				logged.setLogoutDate(dateLogout);
				
				/** Gestione Utente **/
				uBean.setId(utente.getId());
				uBean.setNome(utente.getNome());
				uBean.setCognome(utente.getCognome());
				uBean.setUsername(utente.getUsername());
				uBean.setPassword(utente.getPassword());
				uBean.setEta(utente.getEta());
				uBean.setAltezza(utente.getAltezza());
				uBean.setPesoAttuale(utente.getPesoAttuale());
				uBean.setPesoForma(utente.getPesoForma());
				uBean.setCreateDate(utente.getCreateDate());
				
				loggedManager.add(logged);
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return uBean;
	}
}
